Among the changes wrought by the rise of ubiquitous computing has been the increase in the number of communication mediums that any one device has access to at any given time. As a result, at any one time, many devices today have multiple communication mediums (“interfaces”) over which they can send and receive data. For example, upper-end mobile phones and Personal Digital Assistants (PDAs) could conceivably send data over such varied interfaces as Short Message Service (SMS), voice, GPRS, Bluetooth, WiFi, and/or over the wire (e.g., Digital Subscriber Line (DSL), cable modem, etc.).
Each of these heterogeneous communication interfaces potentially has different inherent performance capabilities. Furthermore, in today's world, not only are there numerous types of interfaces for communicating, but, since each device plays multiple roles, the types of data that needs to be transmitted thereon is also numerous. Thus, there is a need to intelligently match the type of data to be communicated with an appropriate configuration of the communication interfaces to meet the expected levels of performance.
Traditional networks did not comprise a heterogeneous set of communication mediums. For instance, computers sent data over a single modem at a particular bit rate. Thus, traditional measurements of performance, also known as Quality of Service (QoS), was limited to such notions as limiting lost data packets and quality of the voice-over and so forth. However, in addition to the traditional notions of performance, it is important to note that each of these heterogeneous interfaces has an associated cost (e.g., a monetary cost, or a power-consumption cost) that should also be considered, so that data can be sent in a cost-aware way, while achieving specified levels of performance.